const Redis = require('redis')
const  bluebird = require('bluebird')

// const client = Redis.createClient(6379, '127.0.0.1')
// client.on('error', (err) => {
//     console.log(err)
// })

//  1.基础应用
// client.set('str', '字符串', (err, data) => {
//     console.log(data)
// })
// client.hmset('user123', 'name', '字符串1', 'age', 123, 'gender', 'female', (err, data) => {
//     console.log(data)
//     client.hkeys('user123', (err, keys) => {
//         keys.forEach(key => {
//             client.hget('user123', key, (err, value) => {
//                 console.log(key,value)
//             })
//         })
//     })
// })


// 2.改用 promise
// bluebird.promisifyAll(Redis.RedisClient.prototype);
// bluebird.promisifyAll(Redis.Multi.prototype);
// const client = Redis.createClient(6379, '127.0.0.1')
// async function main(){
//     await client.hmsetAsync('test', 'name', '字符串1', 'age', 123, 'gender', 'female')
//     const res = await client.hkeysAsync('test')
//     console.log(res)
// }
// main()


// 2.发布订阅，消息中间件
// bluebird.promisifyAll(Redis.RedisClient.prototype);
// bluebird.promisifyAll(Redis.Multi.prototype);
// const subscriber = Redis.createClient(6379, '127.0.0.1')
// subscriber.subscribe('drink')
// subscriber.subscribe('food')
// subscriber.on('message',(channel,msg)=>{
//     console.log('drink：' + msg)
//     subscriber.unsubscribe('food') // 取消订阅
// })
// const publisher = Redis.createClient(6379, '127.0.0.1')
// publisher.publish('food','rice')
// publisher.publish('drink','water')
// setTimeout(()=>{
//     publisher.publish('food','rice')
// },1000)

// 3.事务，多个命令一次执行
bluebird.promisifyAll(Redis.RedisClient.prototype);
bluebird.promisifyAll(Redis.Multi.prototype);
const client = Redis.createClient(6379, '127.0.0.1')
client.multi().set('key3','value3').set('key4','value4').execAsync().then((res)=>{
    console.log(res) // [ 'OK', 'OK' ]
})

